package cn.huijielong.common.utils;

import net.sf.json.JSONObject;

final public class Status {
	
	public final static String V_MINUS_1="-1";
	public final static String V_0="0";
	public final static String V_1="1";
	public final static String V_2="2";
	public final static String V_3="3";
	public final static String V_4="4";
	/**
	 * 结束当前处理
	 */
	public final static String FINISH="-1";
	public final static String SUCCESS="0";
	public final static String FAIL="1";
	public final static String ERROR = "2";//错误
	
	public final static int INT_FINISH=-1;
	public final static int INT_SUCCESS=0;
	public final static int INT_FAIL=1;
	public final static int INT_ERROR = 2;//错误
	/**
	 * token无效
	 */
	public static final int INT_TOKEN_FAIL = 3;
	
	public final static String SUCCESS_MSG="处理成功";
	public final static String FAIL_MSG="处理失败";
	public final static String SUCCESS_STR="SUCCESS";
	public final static String FAIL_STR="FAIL";
	public final static String DataBody="DataBody";
	public final static String RefDataBody="RefDataBody";
	public final static String ExecuteCount="ExecuteCount";
	public final static String NAME="status";
	public final static String NAME_MSG="msg";
	/**
	 * 数据库操作失败是否抛异常，为“Y”抛出异常
	 */
	public final static String IS_THROW_EXCEPTION="is_throw_exception";
	
	
	/**
	 * 处理是否成功
	 * @param json
	 * @return
	 */
	public static boolean isSuccess(JSONObject json){
		if(json==null)
			return false;
		return SUCCESS.equals(json.optString(NAME));
	}
	/**
	 * 处理是否成功
	 * @param status
	 * @return
	 */
	public static boolean isSuccess(int status){
		return INT_SUCCESS==status;
	}
	
	/**
	 * 处理是否成功
	 * @param json
	 * @return
	 */
	public static boolean isFail(JSONObject json){
		if(json==null)
			return false;
		return FAIL.equals(json.optString(NAME));
	}
	/**
	 * 处理是否成功
	 * @param status
	 * @return
	 */
	public static boolean isFail(int status){
		return INT_FAIL==status;
	}
	
	/**
	 * 处理是否结束
	 * @param json
	 * @return
	 */
	public static boolean isFinish(JSONObject json){
		if(json==null)
			return false;
		return FINISH.equals(json.optString(NAME));
	}
	/**
	 * 处理是否结束
	 * @param status
	 * @return
	 */
	public static boolean isFinish(int status){
		return INT_FINISH==status;
	}
	/**
	 * 判断状态是否相等
	 * @param json
	 * @param status
	 * @return
	 */
	public static boolean eq(JSONObject json,int status){
		if(json==null)
			return false;
		return status==json.optInt(NAME, -101010);
	}
	/**
	 * 状态标记为成功
	 * @param json
	 * @return
	 */
	public static JSONObject suc(JSONObject json){
		json.put(NAME, SUCCESS);
		return json;
	}
	/**
	 * 状态标记为失败
	 * @param json
	 * @return
	 */
	public static JSONObject fail(JSONObject json){
		json.put(NAME, FAIL);
		return json;
	}
	/**
	 * 状态标记为成功，并记录成功消息
	 * @param json
	 * @param msg
	 * @return
	 */
	public static JSONObject suc(JSONObject json,String msg){
		json.put(NAME, SUCCESS);
		json.put(NAME_MSG, msg);
		return json;
	}
	/**
	 * 状态标记为成功，并记录成功消息
	 * @param msg
	 * @return
	 */
	public static JSONObject suc(String msg){
		return suc(new JSONObject(),msg);
	}
	/**
	 * 状态标记为失败，并记录失败消息
	 * @param json
	 * @param msg
	 * @return
	 */
	public static JSONObject fail(JSONObject json,String msg){
		json.put(NAME, FAIL);
		json.put(NAME_MSG, msg);
		return json;
	}
	/**
	 * 状态标记为失败，并记录失败消息
	 * @param msg
	 * @return
	 */
	public static JSONObject fail(String msg){
		return fail(new JSONObject(),msg);
	}
	/**
	 * 状态标记为结束
	 * @param json
	 * @return
	 */
	public static JSONObject finish(JSONObject json){
		json.put(NAME, FINISH);
		return json;
	}
	/**
	 *  状态标记为结束，并记录结束消息
	 * @param json
	 * @param msg
	 * @return
	 */
	public static JSONObject finish(JSONObject json,String msg){
		json.put(NAME, FINISH);
		json.put(NAME_MSG, msg);
		return json;
	}
	/**
	 * 状态标记为结束，并记录结束消息
	 * @param msg
	 * @return
	 */
	public static JSONObject finish(String msg){
		return finish(new JSONObject(),msg);
	}
	/**
	 *  状态标记为错误（不常用，一般用fail）
	 * @param json
	 * @return
	 */
	@Deprecated
	public static JSONObject error(JSONObject json){
		json.put(NAME, ERROR);
		return json;
	}
	/**
	 * 状态标记为错误，并记录错误消息（不常用，一般用fail）
	 * @param json
	 * @param msg
	 * @return
	 */
	@Deprecated
	public static JSONObject error(JSONObject json,String msg){
		json.put(NAME, ERROR);
		json.put(NAME_MSG, msg);
		return json;
	}
	/**
	 * 状态标记为错误，并记录错误消息（不常用，一般用fail）
	 * @param msg
	 * @return
	 */
	@Deprecated
	public static JSONObject error(String msg){
		return error(new JSONObject(),msg);
	}
}
